Skip to content

[Feature] 지출 내역 차트 페이지네이션 구현 및 UI 개선#61

Merged
Peter1119 merged 12 commits intomainfrom
feature/expense_chart
Dec 15, 2025
Merged

[Feature] 지출 내역 차트 페이지네이션 구현 및 UI 개선#61
Peter1119 merged 12 commits intomainfrom
feature/expense_chart

Conversation

@Peter1119
Copy link
Contributor

🔗 관련 이슈

  • 관련 이슈: #

✨ 작업 내용

  • 지출 내역 차트 페이지네이션 구현: ExpenseChartViewTabView를 적용하여 7일 단위로 지출 내역을 탐색할 수 있도록 변경했습니다.
  • 커스텀 인디케이터 적용: UIPageControl 대신 커스텀 인디케이터를 구현하여 차트 하단에 배치하고, 단일 페이지일 경우 숨김 처리했습니다.
  • 차트 시인성 개선: 지출 금액이 적거나(0원) 큰 경우에도 그래프가 자연스럽게 보이도록 Y축 스케일 고정(min 10,000) 및 최소 높이 보정을 적용했습니다.
  • 페이지 동기화 및 필터링: 차트의 페이지 넘김과 지출 리스트 데이터가 동기화되도록 ExpenseListFeaturecurrentPage 상태를 추가하고 필터링 로직을 개선했습니다.
  • 빈 화면(Empty View) 대응: 지출 내역이나 정산 결과가 없을 때 보여줄 엠티 뷰 UI를 개선하고 관련 에셋(expenseEmpty, settlementEmpty)을 추가했습니다.
  • 헤더 총액 버그 수정: 기간이 '전체'일 때 화면에 보이는 페이지의 합계가 아닌, 전체 여행 경비의 합계가 표시되도록 로직을 수정했습니다.

📸 Showcase

변경 전 변경 후
- (스크린샷 첨부 예정)

📌 이미지가 없다면 이 섹션은 생략해도 됩니다.


📝 참고 사항

  • 차트의 디자인(Bar 너비, Corner Radius, 색상)은 기존 가이드를 유지하며 페이지네이션 기능을 붙였습니다.

Motivation 🥳 (코드를 추가/변경하게 된 이유)

  • 사용자가 긴 여행 기간의 지출을 한눈에 파악하기 어렵다는 피드백을 반영하여 주 단위(7일)로 차트를 끊어서 볼 수 있게 개선했습니다.
  • 지출이 없는 날짜나 적은 금액이 차트에서 잘 보이지 않거나 왜곡되는 문제를 해결하기 위해 시각적 보정을 추가했습니다.

Key Changes 🔥 (주요 구현/변경 사항)

  • ExpenseChartView: dayChunks를 이용한 데이터 분할 및 TabView 페이징
  • ExpenseListFeature: formattedTotalAmount 계산 시 selectedDateRangenil이면 전체 합계를 반환하도록 수정
  • ExpenseChartView: .chartYScale(domain: 0...max(maxExpense, 10000)) 적용으로 스케일 왜곡 방지

To Reviewers 🙏 (리뷰어에게 전달하고 싶은 말)

  • ExpenseListFeatureapplyFiltersformattedTotalAmount 로직을 중점적으로 봐주시면 감사하겠습니다. 차트 페이징과 전체 기간 합계가 의도대로 동작하는지 확인 부탁드립니다.

Reference 🔗

Close Issues 🔒 (닫을 Issue)

Close #No.

Checklist

  • 브랜치를 가져와 작업한 경우 이전 브랜치에 PR을 보냈는지 확인
  • 빌드를 위해 SceneDelegate 수정한 것 PR로 올리지 않았는지 확인
  • 필요없는 주석, 프린트문 제거했는지 확인
  • 컨벤션 지켰는지 확인
  • final, private 제대로 넣었는지 확인
  • 다양한 디바이스에 레이아웃이 대응되는지 확인
    • iPhone SE
    • iPhone 13
    • iPhone 13 Pro Max

- ExpenseChartView: 날짜 범위 선택(드래그/탭) 로직 추가
- SettlementHeaderView: 정산 헤더 UI 리팩터링
- ExpenseListFeature: AsyncStream 로딩 정리, 로컬 캐시 적용
- ExpenseListView: 차트·헤더와 연동된 리스트 UI 개선
- 7일 단위 데이터 분할(dayChunks)
- TabView를 이용한 페이징 처리
- 커스텀 페이지 인디케이터 적용
- ExpenseListFeature: currentPage 상태 추가 및 날짜/페이지 기반 필터링 로직 구현
- SettlementHeaderView & ExpenseListView: 상위 뷰에서 차트 페이지 상태 바인딩 연결
- ExpenseListView: 지출 내역 없을 때 empty view 표시 조건 및 메시지 수정
- SettlementResultView: 정산 결과 없을 때 empty view 처리 추가
@Peter1119 Peter1119 self-assigned this Dec 15, 2025
Copy link
Contributor

@minneee minneee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다~!

Copy link
Contributor

@Roy-wonji Roy-wonji left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Roy-wonji 수고 하셨습니다

@Peter1119 Peter1119 merged commit a967845 into main Dec 15, 2025
1 check passed
@Peter1119 Peter1119 deleted the feature/expense_chart branch December 15, 2025 23:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants